5,389
社区成员
发帖
与我相关
我的任务
分享
维护一个D7的老程序,现在需要连接http api 接口获取数据(需要鉴权),由于是D7老版本,资料比较少,网上也找了一些方法,但是都卡在访问鉴权了,提示没有权限,求大神给指导一下,谢谢!
下面是测试代码,运行报错:无权限
procedure TForm1.Button1Click(Sender: TObject);
var
tmpHttp: TIdHTTP;
begin
try
tmpHttp := TIdHTTP.Create(nil);
tmpHttp.ReadTimeout := 5000; //请求超时设置
tmpHttp.HandleRedirects := True;
tmpHttp.Request.ContentType := 'application/json';
tmpHttp.Request.Accept := 'application/json';
tmpHttp.ProtocolVersion := pv1_1;
tmpHttp.HTTPOptions := tmpHttp.HTTPOptions + [hoKeepOrigProtocol];
tmpHttp.Request.Username := 'admin';
tmpHttp.Request.Password := 'admin';
tmpHttp.Request.BasicAuthentication := False;
memo1.Text:=tmpHttp.Get(edit1.text);
finally
tmpHttp.Free;
end;
end;
主要是看API接口使用的是什么鉴权方式了,如果是标准的Basic模式应该是没问题的,看这个问题描述感觉大概率不是标准的basic模式。如果不是标准鉴权,可以考虑在server端对api做个封装,使用basic拿到用户名密码,再用实际api的鉴权方式去提交真正的请求,然后把结果返回给客户端。相当于是针对delphi客户端做了个api代理。